package com.cskaoyan.javase.oop3._1interface._4example;

import com.cskaoyan.javase.oop3._1interface._4example.model.Goods;
import com.cskaoyan.javase.oop3._1interface._4example.operation.controller.IGoodsOperation;
import com.cskaoyan.javase.oop3._1interface._4example.operation.controller.impl.IGoodsOperationImpl;

/**
 * 某电商系统后台，前端程序员需要后端程序员，提供接口来完成库存的管理，展示页面。
 *
 * 假如前后端商量好，要求后端提供以下接口：
 * 1.展示全部商品,将仅装有商品对象的数组返回，前端不提供任何数据。
 *
 * 2.新增商品时，前端提供商品各种参数，后端需要校验ID唯一性，然后将对象插入数组，返回插入结果。
 *      前端仍然传入各种商品信息,前端需要知道商品插入的结果,然后展示结果
 *      结果:
 *          1.id重复了,插入失败
 *          2.数组没有null的位置了,数组满了,插入失败
 *          3.正常,插入成功
 *      所以这时不能用布尔类型作为返回值
 *      可以返回一个状态码,就返回1,2,3对应三个状态
 *
 * 3.删除商品时，前端提供商品ID，后端将该商品删除后，返回删除删除结果。
 * （成功返回true，找不到该ID的商品返回false）
 *
 * @since 11:08
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        IGoodsOperation igo = new IGoodsOperationImpl();
        Goods[] realGoods = igo.getRealGoods();
        for (Goods realGood : realGoods) {
            realGood.printGoods();
        }
        System.out.println("开始新增一条数据:");
        switch (igo.createGoods(6, "热干面", 10, "老北京热干面")) {
            case 1:
                System.out.println("id重复,插入失败!");
                break;
            case 2:
                System.out.println("数组满了,插入失败!");
                break;
            case 3:
                System.out.println("插入成功!");
                realGoods = igo.getRealGoods();
                for (Goods realGood : realGoods) {
                    realGood.printGoods();
                }
        }
        System.out.println("开始删除一条数据:");
        if (igo.deleteGoods(10)) {
            System.out.println("删除成功!");
            realGoods = igo.getRealGoods();
            for (Goods realGood : realGoods) {
                realGood.printGoods();
            }
        }else {
            System.out.println("id不存在!删除失败!");
        }
    }
}
